/**
 * JWT工具函数
 * 用于解析JWT token中的用户信息
 */

/**
 * 解析JWT token
 * @param {string} token - JWT token
 * @returns {object|null} 解析后的payload或null
 */
export function parseJWT(token) {
  try {
    if (!token) return null;
    
    // JWT token由三部分组成：header.payload.signature
    const parts = token.split('.');
    if (parts.length !== 3) return null;
    
    // 解码payload部分（base64url解码）
    const payload = parts[1];
    const decoded = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));
    
    return JSON.parse(decoded);
  } catch (error) {
    console.error('JWT解析错误:', error);
    return null;
  }
}

/**
 * 检查token是否过期
 * @param {string} token - JWT token
 * @returns {boolean} true表示已过期，false表示未过期
 */
export function isTokenExpired(token) {
  const payload = parseJWT(token);
  if (!payload || !payload.exp) return true;
  
  // exp是Unix时间戳（秒），需要转换为毫秒
  const expirationTime = payload.exp * 1000;
  const currentTime = Date.now();
  
  return currentTime >= expirationTime;
}

/**
 * 获取token中的用户信息
 * @param {string} token - JWT token
 * @returns {object|null} 用户信息或null
 */
export function getUserFromToken(token) {
  const payload = parseJWT(token);
  if (!payload) return null;
  
  return {
    username: payload.sub || payload.username,
    iat: payload.iat, // 签发时间
    exp: payload.exp  // 过期时间
  };
}
